{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0d9ef957-e8a3-4a27-b9f0-fb38c5962ca7",
   "metadata": {},
   "source": [
    "In this notebook I provide a demo for classification of ECG data.  \n",
    "It should be run from this docker (see installation instructions in the repo):  \n",
    "https://github.com/bellonet/docker-demo-jupyter-mongo\n",
    "\n",
    "ECG data source:  \n",
    "https://zenodo.org/record/5711347#.YxttUdVBzJV  \n",
    "Dataset: ECG Rhythm LEAD I  \n",
    "It's a part of the PTB-XL dataset:  \n",
    "https://physionet.org/content/ptb-xl/1.0.2/\n",
    "\n",
    "\n",
    "Analysis was copied from:   \n",
    "https://github.com/spdrnl/ecg/blob/master/ECG.ipynb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7cb5a1f7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# If you wish to see all packages\n",
    "#!pip list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6c2d8d9c-2c18-4aa6-8cdd-aa2bef384908",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pymongo\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import regularizers\n",
    "from tensorflow.keras.callbacks import ModelCheckpoint\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import stats\n",
    "from sklearn.model_selection import train_test_split\n",
    "import sklearn\n",
    "import itertools\n",
    "#from tensorflow_addons.optimizers import CyclicalLearningRate\n",
    "import matplotlib as mpl\n",
    "mpl.style.use('seaborn')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8be01ae-eb84-4757-9814-1daa53861ae1",
   "metadata": {},
   "source": [
    "### Getting ECG database from MongoDB\n",
    "If you opened the notebook directly after initializing the container the DB might still be populating. This should take about a minute, maybe it's a good time to go make a coffee."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "467be9ce-2ef2-467c-bbca-0ce2d08da497",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Connection with mongo client - host name and port:\n",
    "client = pymongo.MongoClient('mongohost', 27017)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3b48ae5e-7157-4b1d-94d3-4bbbdad50a32",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['admin', 'config', 'ecg_db', 'local']"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# List all databases: \n",
    "# If this line takes time to execute - the database is still populating. Please wait a minute and run again.\n",
    "client.list_database_names()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "8ab06c68-835f-4e7c-a632-9e76b0cac7e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get the ECG database:\n",
    "db = client['ecg_db']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f586f79f-feb4-46bb-9a78-f6d17dca3337",
   "metadata": {},
   "source": [
    "MongoDB stores data records as *documents*, which are gathered together in *collections*.   \n",
    "A database stores one or more collections of documents."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "ca599214-2f17-401f-875d-1eb5bbbf2c2b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# in ecg_db the documents are stored in the \"patients\" collection:\n",
    "coll = db[\"patients\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d1f94f38-5692-450a-ac22-a5bd2d1c339a",
   "metadata": {},
   "source": [
    "### Viewing the dataset:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "4c228c3f-9aa6-428f-bb12-e27adeb250c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "21837"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Count how many patients are stored in the collection:\n",
    "coll.count_documents({})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "eb7a7b5c-5dfd-4b50-9d23-aa2b1439122f",
   "metadata": {},
   "outputs": [],
   "source": [
    "## See whoch fields each patient has:\n",
    "## Commented as the time-series field is a long list (very long output)\n",
    "\n",
    "#coll.find_one()\n",
    "\n",
    "#### outputed fields:\n",
    "## _id\n",
    "## ecg_id -         values - positive integer\n",
    "## age -            values - positive integer / -1\n",
    "## sex -            values - 0 / 1 / -1\n",
    "## height           values - positive integer / -1\n",
    "## rhythm_diag      values - SR / OTHER / AFIB\n",
    "## time-series      Values - Float array of len 1000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "c6d0550b-ee22-44ba-ad01-a5494959be6e",
   "metadata": {},
   "outputs": [],
   "source": [
    "## Slicing example - selecting all the records belonging to a specific criterion:\n",
    "## In this case age larger than (lt) 50 and sex==0.\n",
    "## For those records we get a list of the diagnosis and a list of the time-series.\n",
    "## As time-series is a list per patient that creates a list of lists.\n",
    "\n",
    "diags = list()\n",
    "signals = list()\n",
    "for e in coll.find({\"age\": {\"$lt\": 50}, \"sex\": 0}):\n",
    "    diags.append(e[\"rhythm_diag\"])\n",
    "    signals.append(e[\"time-series\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "49aef852-be6e-437f-b407-5e6194b574f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2736, 1000)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# List of lists to np array:\n",
    "signals = np.array(signals)\n",
    "signals.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "991a44e6-3393-45bb-ba8b-9c3a6def6e2d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2736"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(diags)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "5b11e7a1-e83f-4651-99f5-3acb37be4a0c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Distribution of rhythm_diag \\n for patients sex=0, age>50')"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(4,4))\n",
    "plt.hist(diags)\n",
    "plt.title(\"Distribution of rhythm_diag \\n for patients sex=0, age>50\")\n",
    "\n",
    "# SR - Sinus Rhythm, AFIB - Atrial Fibrillation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "09cfb48d-0334-4215-94f3-5e6de8249bc1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'example time-series signal from one patient')"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArgAAAH7CAYAAAAn5OxwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAADXtUlEQVR4nOydd5gcxbW3fz1pc1JOKCCxygmJJISQBDY52cYmmGSQMQ4YMNiAfQFjbMAYMGAbDP6uRM7YZC6IDJZAEggJCeW0iquwOU7o74+Z7qmurp7pnty1530eHjSzPT11pqqrTp06QVFVVQVBEARBEARBSIIn3w0gCIIgCIIgiExCCi5BEARBEAQhFaTgEgRBEARBEFJBCi5BEARBEAQhFaTgEgRBEARBEFJBCi5BEARBEAQhFaTgEgRBEARBEFJBCi5BEARBEAQhFaTgEgRBEARBEFJBCi5BEEm5/vrrcfTRR2f8vi+99BJGjx6NjRs3ZvzehUC2fjenfPbZZxg9ejQ++uijvHy/nX7etGkTvvOd72DChAl4+OGHc9i6ns3cuXNx9dVX57sZBJFxfPluAEEQPYeHHnoIa9euxb333gsAOPnkk3HMMcegV69eeW5Zdvjtb3+LYDCY72Zg6tSp+OSTT1BVVZXvpljy+OOPY926dXj66acxbNiwfDdHSkKhEKZPn44XX3wRI0eOBAC88MIL8Pv9OfkugsglpOASBJEzli9fjpKSEv11cXExiouL89ii7FJRUZHvJgAAAoEA+vbtm+9mJKSpqQn9+vXDxIkT890UaVmzZg06OjoM72Vrcyn6LoLIJeSiQBBZ5oknnsAZZ5yBKVOmYMaMGbjpppvQ3NwMAKirq8PUqVN1i6bGJZdcgpNOOgldXV0AgK+++gqXXnopjjrqKEyePBknn3wynnnmGcNn5s6di1tvvRXz58/HrFmzMGXKFFx++eVobm7Gk08+iTlz5uDQQw/Fz372M/37AWD06NH4xz/+gXvvvRczZ87ExIkTcc4552DNmjUpyyVi7ty5eP/99/HGG29g9OjR+Oyzz0xH19dffz1OPfVUfPLJJzjttNMwceJEnHnmmfjmm2/w2Wef4cwzz8SUKVPw3e9+19S+119/HWeffTYOPfRQHH744bj66quxZ8+eJL0TXYjnzZuHI488EpMmTcLJJ5+Mxx9/3HDN119/jcsuuwwzZszAlClTcP755+OLL77Q/665ALz55ps47bTTMGPGDF0e3kUh2e/W1NSE3/72tzjmmGMwYcIEHHvssbjtttvQ2dlpKUOyz4hcFJ5//nkcf/zxmDhxIr73ve9hxYoVOOGEE3D99dcDALZv347Ro0fjjTfewJ133omjjz4ahx56KC666CJs2rRJv08oFMJ9992HE044AZMnT8bRRx+NK6+8Etu3b0/622vMnTsXr7/+Onbs2IHRo0fjgQce0MfGhx9+iOOPPx7f+9739OtfeuklfXxMmzYNl156KVatWmX4++jRo7FixQpcdNFFmDx5MmbPno1XXnkFu3btwqWXXoqpU6fiuOOOwxtvvJGwbaqq4l//+hdOOOEETJgwAYcffjiuvPJK1NXV6dc88MADmD59OjZu3IiLL74YU6dOxcyZM/GnP/0J4XBYv669vR233XYbTjjhBEycOBHHH388Hn74Yaiqavn9Wt998MEHuPrqqzFt2jRMnToV11xzDZqamvTr2tracNttt2Hu3LmYOHEiZs2ahRtvvBENDQ36b/Ld734XQPTk5IILLtB/e9ZFwU4b586diz/+8Y94/vnn9X4/7bTT8MEHHyT8LoLIKSpBEFnj4YcfVkePHq3+/e9/V7ds2aJ++OGH6pw5c9QLLrhAv+bZZ59Vx48fr65bt05VVVV95ZVX1HHjxqlfffWVqqqq2tLSok6dOlW9/PLL1fXr16t1dXXq/Pnz1draWvXdd9/V7zNnzhz1uOOOU2+99VZ148aN6ptvvqmOHj1aPeecc9QbbrhB3bhxo/rWW2+po0ePVh944AH9c7W1teqxxx6r3nLLLerGjRvVpUuXqieddJI6Z84cNRwOq6qqqr/5zW/UGTNmOJKLZ//+/eqsWbPUK664Qq2vr1e7urrUF198Ua2trVU3bNhg+J558+apq1evVpcvX64ec8wx6qmnnqpedNFF6tdff61+9dVX6jHHHKP+8Ic/1O/9+uuvq7W1tervf/97dePGjeqSJUvU008/XT3xxBPVrq6uhH107LHHqldddZW6bt06ta6uTn3mmWfUcePGqa+//rqqqqq6detWdcqUKeoPf/hD9auvvlLXrFmjXnPNNerkyZP1di9evFitra1VTz/9dPWdd95Rd+7cmfLvdu2116qnnnqq+sUXX6g7d+5UP/zwQ/XYY49Vb7rpJksZkn1Ga9+HH36oqqqqfvzxx2ptba164403quvXr1ffeecd9ZRTTlGnT5+u/uY3v1FVVVXr6urU2tpa9eSTT1YffPBBddOmTeqiRYvUI444wvDbP/DAA+r48ePVN998U925c6f61VdfqWeddZZ61lln6dfw/SwaG1dccYU6a9Ystb6+Xm1tbdU/c+6556qLFy9Wd+/eraqqqr7wwgtqbW2tes8996gbNmxQV6xYoV5wwQXqtGnT9Gu0z5533nnqxx9/rG7atEm96KKL1MmTJ6sXX3yx+sEHH6ibNm1SL774YnXq1Klqa2ur5W973333qePHj1fnz5+vbt68WV2yZIl62mmnqXPmzFHb2tpUVVXV+++/X508ebJ6/vnnq++//766bds29W9/+5taW1urvvTSS/q9LrvsMvXwww9XX3nlFXXLli3qM888o06cONHwPPJofXf88cerTz75pLplyxb1jTfeUKdMmaJed911+nXXX3+9evjhh6uffPKJunPnTvWzzz5T58yZo/785z9XVVVVOzo61AULFqi1tbXqkiVL1IaGBlVVo/PGVVdd5aiNc+bMUU888UT1qquuUr/55ht1zZo16g9+8AP10EMPVVtaWiy/iyByCSm4BJElgsGgOn36dPVXv/qV4f133nlHra2tVZctW6a/N2/ePPWcc85RGxoa1BkzZqj33Xef4T5bt25Vm5qaDPeZMWOGesstt+iv58yZo86ePVsNhUL6e6eeeqp66KGHqh0dHYb3rrjiCv11bW2tetJJJ6mRSER/b+HChWptba26aNEiVVWNipoTuXj4xVSk4NbW1qpbtmzRr7n11ltN97311lvVadOm6a9POeUU9ZxzzjF81+rVq9Xa2lr1lVdesWxPY2OjWltbqyuzGqtWrVLr6+tVVVXV3//+9+qUKVMMv39nZ6c6Y8YM9Xe/+52qqnEl5I477jDcJ5Xf7bTTTjMps1u3blU3b95sKUeyz/AK7jXXXKPOmDFDDQaD+vWvvfaaWltba1Jwf/GLXxjue9NNN6mTJk3SXx84cMDQX6qqqk899ZRaW1ur7t+/X1XV5AquqqrqVVddpc6ZM0d/rX3m8ccfN1x3wgknqD/60Y8M7+3du1cdO3as+o9//MPw2eeee06/5q233lJra2vVBx980PTe6tWrhW3q6upSp06dqv7P//yP4f2VK1eqtbW16ssvv6yqalTBra2tVd977z39mnA4rE6ZMkW9+eabVVVV1RUrVpjapKqqetttt6lTp0613Ihpfcf375/+9Cd10qRJant7u6qqqlpfX6/W1dUZrrnrrrvUKVOm6M+2qB/YZ9JuG+fMmaPOnDnT0GZtk6ltzO30OUFkE3JRIIgssXHjRjQ3N2PmzJmG94888kgAwOrVq/X3brvtNmzatAnnnHMO+vfvjyuuuEL/m8/nw549e/DrX/8as2fPxtSpUzF16lTs378fjY2NhnuPHj0aXq9Xf11VVYURI0YY/FyrqqrQ0tJi+Ny0adOgKIr+esKECQCAzZs3pyVXKpSVlRmCjLTAqLFjxwplaG1txfr1603tGTt2LKqrqxO2p6qqCtOmTcPvf/973Hvvvfjss8/Q3d2NcePG6T6ry5cvx6RJk1BZWal/rqioCIceeqjhWByI/24i7P5uc+fOxfPPP48bb7wRCxcuRFNTE4YOHYrhw4db3tvpZ+rq6nDIIYfA5/MZ7iFiypQphte9e/dGZ2cnuru7AUR/i1deeQWnnXYaDj/8cEydOhV/+tOfAEA/Hk8H9jdtbW3F5s2bcdhhhxmu6dOnDw466CBTf4wbN07/t9U4AmB6HjQ2bdqEtrY20/eNGzcORUVFpu9jfyuPx4Pq6mrd/WT58uUAYOr/o446Cm1tbdiyZYuwDRrTp083vB4/fjw6Ozuxc+dOAIDX68UTTzyBE088EdOnT8fUqVOxYMECtLe3632VDCdtHD9+PAKBgP5a8+Vl3SYIIp9QkBlBZAlt0bzpppvw+9//3vT3vXv36v/u168fvv3tb+O5557DTTfdZIhq/vrrr3HRRRdh+vTpuP3229G/f394vV6hXxsbwAUAiqII3+Phg6HKysoAQOhT60SuVLBqL/s+K0NraysA4MEHH8S//vUvw2c7OjpQX18PADjllFN0ZQAAHnnkEUyfPh2PPPIIHnvsMbz55pt46KGHUFZWhu9///u45pprEAgE0NLSgjVr1mDq1KmGe3d3d5sCdBIFldn93X75y19i+PDhePHFF3HVVVdBVVUce+yxuPnmm9G/f3/hvZ1+prGxEQMGDDC8V1JSIsyyYNUfaswn87rrrsOHH36I6667DkcccQRKSkrw9ttv4y9/+Yvlb+EE9jfV+lr0O5eXl6Otrc3wHrux09otek+18IG1+j6Px4PS0lLT95WWlhpeK4qi31vr/5NPPtlwTSQSARDt/9raWmE7ABg2WEBUXiD6jKqqiksvvRTbt2/HDTfcgAkTJqCoqAiPP/64yZ88EU7amGxcEES+IQWXILKEpixcd911mDVrlunv7KK5cuVKvPTSS5gzZw4eeOABnHDCCejTpw+AaPBUJBLB/fffj+rqagDRBSeTlhJ+odYWdpHC40SuXKB938UXX4yzzz7b9HdN6Xj44YcRCoX09zXFr6ysDFdccQWuuOIK1NfX49VXX8V9992HkpIS/PKXv0RlZSUGDBiA2267zXRvj8f+IZjd301RFJx55pk488wz0dbWhg8//BB33XUXrrnmGjz55JPCezv9TCAQ0AMYNYLBINrb223LA0THybvvvosf/vCHuOiii/T3NYUo02hKnTY++bYMHjw4o9+nKZX890UiEbS3tzsa61r/P/roo8LnKlmWC/4Z1ZTRqqoqrF+/HqtXr8YNN9yA73znO/o1di23mWojQRQS5KJAEFlixIgRqKysRF1dHYYNG6b/N2TIEIRCId36193djeuvvx6nnHIK/va3v6Ffv3743e9+p9+nu7sbJSUlunILAG+88QY6OzszZi357LPPDPdauXIlAGDUqFEpy2VFpi08ZWVlqK2txebNmw3tGTZsGLq7u9G7d28AwODBgw1/Ky4uxp49ewxR9P369cOll16Ko48+Gt988w2A6LHz5s2bMXDgQMPnVVVFv379bLfTzu/W0dGB119/Xbecl5WV4eSTT8ZFF12kt4cnlc8MGzYMq1atMkT4v/fee45z9gaDQaiqikGDBunvhcNhvPLKK47uY5fy8nKMGjUKS5YsMbxfV1eHbdu2ZTzF2IgRI1BRUWH6vmXLlqGrq8vR902ePBkAUF9fb+j/yspKlJSUmKy/PIsXLza8XrlyJUpLSzFo0CBdkR04cKD+99bWVrz99tsA7D9z6baRIAoJUnAJIkv4fD5cdtllePrpp/H4449jy5YtWLNmDW644QacffbZegqre++9Fw0NDbjhhhvg8/lw22234aOPPsKLL74IILrotLe3Y8GCBdi+fTteeuklPPnkk5gyZQrWr1/vKB2TFa2trbjtttuwceNGLFu2DPfccw+GDx+OadOmpSyXiMrKSqxZswarV6/G/v370263xuWXX453330XDzzwADZu3IiNGzfizjvvxFlnnZXQB7e5uRm/+tWv8Je//AUbNmzArl27sHDhQnzxxRe6b+yFF16ItrY2/OpXv8LKlStRV1eH5557DmeeeSaeffZZ222087v5fD7cdddduO6667BixQrs3r0bX3zxBV555RW9PaL7Ov3MSSedhL179+LPf/4zNm/ejPfffx+PPPKIY+t7TU0Nhg8fjn//+99Yu3YtvvnmG1xxxRX6uFmyZInQ2poO8+bNw8cff4wHHngAW7ZswYoVK3D99dejpqZGT02VKfx+Py655BK8+OKLeOKJJ1BXV4clS5bglltuwcEHH4zjjz/e9r0mTJiAmTNn4g9/+AMWLlyI7du34/PPP8dll12Gn/zkJ0mV0E8++QTPPPMMtm7dijfffBMvvvgiTjnlFBQXF+Pggw9GZWUlnn76aWzevBnLly/HZZddprfvs88+Q3t7u26R/vDDD7Fu3bqMt5El2XcRRLYhFwWCyCKXX345ysrK8OSTT+LOO+9EIBDAYYcdhieffBL9+/fHsmXLsGDBAtx9992oqakBAEyaNAkXXHAB/vSnP+Goo47Cqaeeiq+//hr//Oc/cf/99+OII47AX//6Vyxbtgy/+93vcMEFF+D9999Pq52nn346/H4/LrroIjQ1NWHixIm46667hP66duSyYt68efj973+P8847D7fffntabWY59dRT4fF48Mgjj+Cf//wnfD4fJk6ciH/9618JA78OOeQQPPTQQ3jwwQfx1FNPIRwOY/Dgwbj00kv1I/dhw4bh8ccfx7333osLL7wQwWAQw4cPx29+8xuce+65jtpp53f73//9X9x1112YN28e2tra0LdvX8yaNcuynKrf73f8mVNPPRXbtm3Dk08+iWeeeQaTJk3C7bffjgsuuMAQOGSHu+66C7fccgvOPvts9O/fHz/+8Y9xxhlnYP369bjtttugKEpGK2WdeeaZiEQimD9/Pv75z3+iuLgYhx9+OJ544omsFC346U9/iqKiIjz22GO4/fbbUVFRgWOOOQbXXXed49/qgQcewL333otbb70V+/btQ1VVFY4//nhcffXVls+axtVXX433338fd911FyKRCL797W/jf/7nfwBE3XD+8pe/4I477sAZZ5yBYcOG4aqrrsLUqVPx5Zdf4he/+AUeeOABzJw5E4cffjjuuecevPbaa3jppZcy2kYWO99F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ebSnX79+stvtamhooIYWcPjwYZ0/f14/+MEPFBERofj4eOXl5Wn//v3y9/enhhbUmf8/Y2NjJbn/trqqqspx7HYj4HajESNGqLi42GVZjMLCQg0dOlTh4eEe7Bma+uijj7RmzRrt2rVL2dnZjvaUlBTHfKMbjh8/rtTUVEnXa+w8n8hms+nkyZOO4+h6b731lq5cuaKMjAylpaUpJydHkpSWlqbExETqZwF9+/ZVbGysioqKHG0XLlxQUFCQpk6dSg0twGazyW63O0bjJamxsVGSlJ6eTg0tqDPf/wYMGKCoqCiX459++qnq6+s1YsSIrulwl63PgGY98sgjZv369aa6utp89tlnZvr06eaVV17xdLfgpKGhwTz00ENm9+7dbsfKysrM6NGjze9//3tz7do1895775mRI0eaoqIiY4wxBw4cMGPHjjVHjx41V69eNc8//7yZOnWqqa2t7e7buGNVVlaaixcvOv4cPXrUJCYmmosXL5oLFy5QP4v46U9/ambMmGHOnj1rysrKzPz5883atWv5N2gR5eXlZvz48eYnP/mJuXr1qikvLzfLli0zCxcupIYW8NRTT7ktE9bZuu3cudN885vfNMXFxaa8vNwsXbrUrFixosvuwc8Ypx+v0OVKSkq0efNmffTRR4qIiFB2draWL1/O3CIvUlBQoIULFyo4ONjt2J///GcVFxdrx44dOn36tBISErR8+XJlZmY6zvnd736nl19+WZcvX9bw4cO1YcMGJSYmductwMn58+c1Y8YMffLJJ5KkI0eOUD8LqK+v17Zt2/THP/5RDQ0NysrK0saNGxUeHk4NLeL48ePavn27Tp06peDgYI0fP15r165VfHw8NfRSKSkpkm6OtgcGBkqSYwWLztStvr5ezzzzjN555x01NjYqPT1dmzZtanHVhs4i4AIAAMCnMAcXAAAAPoWACwAAAJ9CwAUAAIBPIeACAADApxBwAQAA4FMIuAAAAPApBFwAAAD4FAIuAFjUkSNHlJKSos8//9zTXQEArxLo6Q4AAJq3YcMGvfnmm47P6+vrFRgYKH//m2MTN3YYAgDcxE5mAGARSUlJ2rx5sxYsWODprgCAV2OKAgBY1D//+U8lJSXp9OnTkqRvfetbevrpp7Vt2zaNHz9e48eP1y9+8Qt9+umnmj9/vkaNGqWsrCwdOXLEcY2KigqtW7dOGRkZSk1N1Te+8Q3l5+d76pYA4LYg4AKAD8nPz1dKSooOHjyoxYsXa9euXdq+fbt+/OMf69ChQ0pISNDWrVsd5+fl5am0tFR79uxRQUGBcnNztWbNGhUUFHjwLgCgcwi4AOBDEhISNHv2bAUFBSkrK0t2u12zZs1SQkKCwsLCNH36dMeI76lTp/Svf/1La9euVXx8vIKCgjRr1iw98MAD2rNnj4fvBAA6jofMAMCHJCQkOD4ODQ2VJPXr18/R1qNHD9XV1UmSzpw5I0nKyclxuYYxRqmpqV3dVQDoMgRcAPAhzisstNYmSSEhIZKkAwcOKDY2tkv7BQDdiSkKAHCHGjRokCTp+PHjLu0XLlyQzWbzRJcA4LYg4ALAHWrw4MHKyMjQjh07dPr0adlsNh0+fFhz5szR22+/7enuAUCHMUUBAO5gzzzzjLZv367HHntMdXV1SkhI0Jo1azR79mxPdw0AOoyNHgAAAOBTmKIAAAAAn0LABQAAgE8h4AIAAMCnEHABAADgUwi4AAAA8CkEXAAAAPgUAi4AAAB8CgEXAAAAPoWACwAAAJ9CwAUAAIBPIeACAADApxBwAQAA4FP+H1vMaw2Y+MU9AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 800x550 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(signals[0])\n",
    "plt.xlabel('Time')\n",
    "plt.ylabel('Activation')\n",
    "plt.title(\"example time-series signal from one patient\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa350c14-1eb7-4cd3-be87-14af1a4d8048",
   "metadata": {},
   "source": [
    "### Analysis\n",
    "The entire dataset will be used for the analysis (divided to train and test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "22fda96d-edac-40b0-8296-4743de7b9be9",
   "metadata": {},
   "outputs": [],
   "source": [
    "diags = list()\n",
    "signals = list()\n",
    "for e in coll.find({}):\n",
    "    diags.append(e[\"rhythm_diag\"])\n",
    "    signals.append(e[\"time-series\"])\n",
    "    \n",
    "signals = np.array(signals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "b4017ac5-d22b-4a02-9208-310f9e7ac778",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((21837, 1000), 21837)"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "signals.shape, len(diags)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "b3d276a8-8eab-4dde-bc74-4c19bc8b6d74",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0, 1, 2]), (21837,))"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# diagnosis values - Encode target labels with value between 0 and n_classes-1.\n",
    "le = sklearn.preprocessing.LabelEncoder()\n",
    "le.fit(diags)\n",
    "y = le.transform(diags)\n",
    "\n",
    "## For the reverse transform - back to string values:\n",
    "# le.inverse_transform(y)\n",
    "np.unique(y), y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "b9ae889b-b7d3-4b84-841b-5111774dd4b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 0 nan values in the time seires data.\n"
     ]
    }
   ],
   "source": [
    "# Check for nans:\n",
    "print(\"There are {} nan values in the time seires data.\".format(np.sum(np.isnan(signals))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "id": "0e0201e9-c7c0-4f71-b1d1-6ea4fe0071a8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The minimum and maximum activation values in the time-series are -7.455, 4.398\n"
     ]
    }
   ],
   "source": [
    "print(\"The minimum and maximum activation values in the time-series are {}, {}\".format(np.min(signals), np.max(signals)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "66bc9cff-300d-45ae-b4df-3ec50aba27ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "size training set: (14630, 1000) (14630,)\n",
      "size testing set: (7207, 1000) (7207,)\n",
      "min and max training set: -7.455 2\n",
      "min and max testing set: -5.984 2\n"
     ]
    }
   ],
   "source": [
    "# train test split:\n",
    "X_train, X_test, y_train, y_test = train_test_split(signals, y, test_size=0.33, random_state=42)\n",
    "\n",
    "print('size training set:', X_train.shape, y_train.shape)\n",
    "print('size testing set:', X_test.shape, y_test.shape)\n",
    "print('min and max training set:', np.min(X_train), np.max(y_train))\n",
    "print('min and max testing set:', np.min(X_test), np.max(y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "8400c530-f1d2-4ee7-ba5d-537c4381cfde",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Format y to one hot:\n",
    "y_train = keras.utils.to_categorical(y_train, 3)\n",
    "y_test = keras.utils.to_categorical(y_test, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "e700fa62-9bd4-4c8b-a284-2e21223610e6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the model architecture (very basic NN)\n",
    "def get_base_model(categories=3):\n",
    "    return keras.Sequential([\n",
    "        keras.layers.Dense(15, activation='relu', input_shape=[1000], kernel_regularizer=regularizers.l2(0.0001)),\n",
    "        keras.layers.Dense(10, activation='relu', kernel_regularizer=regularizers.l2(0.0001)),\n",
    "        keras.layers.Dense(5, activation='relu'),\n",
    "        keras.layers.Dense(3, activation='softmax')                   \n",
    "  ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "91d87d85-9884-45e2-9bd8-40e3ffcb23d6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/50\n",
      "58/58 [==============================] - 1s 2ms/step - loss: 1.0505 - accuracy: 0.6735\n",
      "Epoch 2/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.8491 - accuracy: 0.7677\n",
      "Epoch 3/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.7093 - accuracy: 0.7679\n",
      "Epoch 4/50\n",
      "58/58 [==============================] - 0s 2ms/step - loss: 0.6695 - accuracy: 0.7686\n",
      "Epoch 5/50\n",
      "58/58 [==============================] - 0s 2ms/step - loss: 0.6505 - accuracy: 0.7694\n",
      "Epoch 6/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.6331 - accuracy: 0.7722\n",
      "Epoch 7/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.6159 - accuracy: 0.7754\n",
      "Epoch 8/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.5979 - accuracy: 0.7805\n",
      "Epoch 9/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.5801 - accuracy: 0.7865\n",
      "Epoch 10/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.5624 - accuracy: 0.7921\n",
      "Epoch 11/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.5436 - accuracy: 0.7949\n",
      "Epoch 12/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.5263 - accuracy: 0.8051\n",
      "Epoch 13/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.5089 - accuracy: 0.8100\n",
      "Epoch 14/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.4915 - accuracy: 0.8160\n",
      "Epoch 15/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.4758 - accuracy: 0.8219\n",
      "Epoch 16/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.4599 - accuracy: 0.8265\n",
      "Epoch 17/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.4469 - accuracy: 0.8321\n",
      "Epoch 18/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.4336 - accuracy: 0.8372\n",
      "Epoch 19/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.4192 - accuracy: 0.8423\n",
      "Epoch 20/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.4050 - accuracy: 0.8455\n",
      "Epoch 21/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3929 - accuracy: 0.8537\n",
      "Epoch 22/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3826 - accuracy: 0.8591\n",
      "Epoch 23/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3709 - accuracy: 0.8623\n",
      "Epoch 24/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3572 - accuracy: 0.8675\n",
      "Epoch 25/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3476 - accuracy: 0.8702\n",
      "Epoch 26/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3431 - accuracy: 0.8720\n",
      "Epoch 27/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3293 - accuracy: 0.8767\n",
      "Epoch 28/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3215 - accuracy: 0.8826\n",
      "Epoch 29/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3132 - accuracy: 0.8837\n",
      "Epoch 30/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3045 - accuracy: 0.8875\n",
      "Epoch 31/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.3029 - accuracy: 0.8881\n",
      "Epoch 32/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2958 - accuracy: 0.8919\n",
      "Epoch 33/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2822 - accuracy: 0.8973\n",
      "Epoch 34/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2755 - accuracy: 0.9016\n",
      "Epoch 35/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2791 - accuracy: 0.8990\n",
      "Epoch 36/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2626 - accuracy: 0.9059\n",
      "Epoch 37/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2552 - accuracy: 0.9109\n",
      "Epoch 38/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2523 - accuracy: 0.9105\n",
      "Epoch 39/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2479 - accuracy: 0.9141\n",
      "Epoch 40/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2440 - accuracy: 0.9148\n",
      "Epoch 41/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2337 - accuracy: 0.9213\n",
      "Epoch 42/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2302 - accuracy: 0.9211\n",
      "Epoch 43/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2264 - accuracy: 0.9244\n",
      "Epoch 44/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2189 - accuracy: 0.9266\n",
      "Epoch 45/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2128 - accuracy: 0.9288\n",
      "Epoch 46/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2061 - accuracy: 0.9325\n",
      "Epoch 47/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2086 - accuracy: 0.9329\n",
      "Epoch 48/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2177 - accuracy: 0.9280\n",
      "Epoch 49/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2101 - accuracy: 0.9304\n",
      "Epoch 50/50\n",
      "58/58 [==============================] - 0s 3ms/step - loss: 0.2004 - accuracy: 0.9365\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x7f28ff71b5e0>"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Define model params \n",
    "optimizer = keras.optimizers.Adam(learning_rate=0.001)\n",
    "model = get_base_model() \n",
    "model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])\n",
    "\n",
    "# Train\n",
    "model.fit(X_train, y_train, batch_size=256, epochs=50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "id": "de90c80d-1a15-467e-a59b-978a23a8c208",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "226/226 [==============================] - 0s 1ms/step\n"
     ]
    }
   ],
   "source": [
    "# Predict on test data:\n",
    "y_pred = (model.predict(X_test) > 0.5).astype(\"int32\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "id": "31328360-4bd7-4c6a-9a7d-20c6880c2fb8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.10      0.13      0.11       493\n",
      "           1       0.26      0.24      0.25      1161\n",
      "           2       0.81      0.79      0.80      5553\n",
      "\n",
      "    accuracy                           0.66      7207\n",
      "   macro avg       0.39      0.39      0.39      7207\n",
      "weighted avg       0.67      0.66      0.66      7207\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Print classification metrics:\n",
    "print(sklearn.metrics.classification_report(y_test.argmax(axis=1), y_pred.argmax(axis=1)))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
